队列: 先进先出
栈: 后进先出
1. 队列提供的三个方法
- .put() -> 添加值到队列
import queue
q = queue.Queue() # <queue.Queue object at 0x000002086EA71CC0>
q.put(1)
q.put(2)
q.put(3)
- .get() -> 获取队列的值
import queue
q = queue.Queue() # <queue.Queue object at 0x000002086EA71CC0>
q.put(1)
q.put(2)
q.put(3)
print(q.get()) # 1
print(q.get()) # 2
print(q.get()) # 3
print(q.get()) # 此时全部值已经被获取完了,如果再进行获取就会形成 阻塞 等待队列进入第4个值 类似于 input 如果没有值就一直在等到直到有值
- .qsize() -> 获取此时队列还剩多少个值
import queue
q = queue.Queue() # <queue.Queue object at 0x000002086EA71CC0>
q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.qsize()) # 1 以为队列已经被去了两个值所以还剩1个
2. queue.Queue() -> 先进先出 FIFO
import queue
q = queue.Queue()
q.put('a')
q.put('b')
q.put('c')
print(q.qsize()) # 3
print(q.get()) # a
print(q.get()) # b
print(q.get()) # c
3. queue.LifoQueue() -> 后进先出
import queue
lfq = queue.LifoQueue()
lfq.put('a')
lfq.put('b')
lfq.put('c')
print(lfq.qsize()) # 3
print(lfq.get()) # c
print(lfq.get()) # b
print(lfq.get()) # a
4. queue.PriorityQueue() -> 根据权限输出,值越小越优先,值相同就根据 ascii 进行判断最小值先出
import queue
pq = queue.PriorityQueue()
pq.put((5, 'dd'))
pq.put((1, 'b'))
pq.put((1, 'aa'))
print(pq.qsize()) # 3
print(pq.get()) # (1, 'aa')
print(pq.get()) # (1, 'b')
print(pq.get()) # (5, 'dd')